# -*- coding: utf-8 -*-
"""
Created on Tue Aug 15 11:04:57 2023

@author: skunk69
"""

import json

chinese_name = u'儿童期虐待史自评量表'
english_name = 'Personal Report of Childhood Abuse'
abbreviation = 'PRCA'
category = u'家庭与人际关系量表'

outline = u"""1999年世界卫生组织(WHO)对儿童虐待进行的定义：指对儿童有义务抚养、监管及有操纵权的人做出的足以对儿童的健康、生存、生长发育及尊严造成实际或潜在伤害的行为，包括各种的躯体和(或)情感虐待、性虐待、忽视及经济剥削。根据以往的研究结果，儿童虐待主要包括躯体虐待、情感虐待、性虐待和忽视4种形式。此种分类得到了诸多学者的广泛认同。大量研究证明，儿童期遭受虐待的个体容易形成人格障碍、神经症、情感障碍、创伤后应激障碍、性问题、自杀以及其他各种行为问题，而且受虐待经历对受害者心理、生理和社会功能的不良影响往往持续终生。
儿童期虐待史自评量表(Personal Report of Childhood Abuse, PRCA)以WHO的定义和Mash E. J. 等的理论为基础，由朱相华等于2006年编制，主要用于评估被试者是否在儿童期遭受父母的虐待及其受虐待的严重程度，包括躯体虐待、情感虐待、性虐待和忽视4种虐待形式。"""

instruction = u"""下面的题目是为了了解您的一些情况，请您决定哪些问题符合您的情况。在符合您的实际情况的答案上每一个问题只能做一种回答，每个问题都应该回答。我们绝对为您保密。伤害程度是指对身体的或心理的伤害，心理伤害一般包括心理压抑、伤心、担心、忧郁、焦虑、失眠、吃不下饭或脾气变坏等？"""

with open('PRCA.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines[0::4]:
    key,value = line.strip().split('.',maxsplit=1)
    items[key] = value.strip()

reverse_items = []
scales = [u'躯体虐待',u'情感虐待',u'性虐待',u'忽视']
scales_items = [
    [1,6,10,15],# 躯体虐待
    [4,5,9,13,14,18,19],# 情感虐待
    [3,8,12,17],# 性虐待
    [2,7,11,16],# 忽视
    ]

# check scales_items
print(f'scale length={[len(l) for l in scales_items]}')

check = []
for l in scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,21)}
print(f'complementary set= {check_set}')

factors = []
factors_scales = []

hint = lines[1].strip()
sub_items = [l.strip() for l in lines[2:4]]

sub_items = {}
for key,value in enumerate(lines[2:4]):
    sub_items[key+1] = value.strip()

sub_rating = {}
sub_rating[1] = [u'从无',u'偶尔',u'有时',u'经常',u'总是']
sub_rating[2] = [u'没有',u'轻度',u'中度',u'重度',u'极重']

rating = [[u'有',[hint,sub_items,sub_rating]],u'无']
score_rules = list(range(0,5))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《儿童期虐待史自评量表》属于一个自评量表。"""

reliability = u"""正式样本为徐州市某小学四年级学生186例和徐州市某高级中学高一、高二学生248例。
躯体虐待、情感虐待、性虐待和忽视4个分量表及全量表的内部一致性(α系数)在小学生分别为0.85，0.73，0.99，0.89，0.87，在高中生分别0.76，0.75，0.90，0.76，0.86。
对39例小学生间隔3周后进行重测，躯体虐待、情感虐待、性虐待、忽视及全量表的重测信度分别为0.46，0.56，0.70，0.54和0.68，P值均小于0.01，39例高中生的重测信度分别为0.52，0.59，0.32，0.43和0.57。"""
validity = u"""结构效度方面，采用主成分分析方法对高中生样本(N=240)进行探索性因素分析，并根据“因素的特征根值大于1，符合碎石图原理，共同度不低于0.20，因素载荷不小于0.35，每个因素至少包括3个或以上条目”的标准，用平方最大正交旋转方法对特征值大于1的4个初始因子进行旋转，得到的四因子模型与原假设相吻合。但是，由于样本量的限制而没有进行验证性因素分析。
效标效度方面，根据本量表测试的结果划分有与无儿童期虐待的中专学生各90例，进行SCL-90得分比较分析，结果发现，受虐待组SCL-90总均分及各因子分均高于无受虐待组(P<0.05或P<0.01)；且躯体虐待、情感虐待、性虐待、忽视因子分及虐待总分与SDS的相关系数依次为0.60，0.74，0.35，0.51，0.77(P<0.01)，说明本量表符合“受虐待者心理健康水平较无受虐待经历者差”的理论构想，具有良好的实证效度。
另外，把心理问题对生活的影响、自伤行为、自杀行为和自杀意念分别与受虐待总分进行相关分析，相关系数分别为0.40，0.28，0.37，0.22(P<0.01)，也与理论构想相符合。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""条目计分方法：
如果某条目的①项或②项有一个计分为0分，则该条目计为0分；如果某条目为“无”，则该条目计为0分；如果某条目的①项或②项均不等于0分，则该条目计为“(①项分+②项分)/2”分。如果第20个条目包含有前19个条目不能包括的其他虐待形式，可根据以上计分方法归纳入相应的分量表和总分中。
统计计分：
各维度条目之和得到维度分数，所有19个条目得分之和即为该量表的总分，反映了被测者儿童期受虐待的总体状况。
各分量表的意义：
躯体虐待：反映被测者儿童期遭受躯体虐待的情况。
情感虐待：反映被测者儿童期遭受情感虐待的情况。
性虐待：反映被测者儿童期遭受性虐待的情况。
忽视：反映被测者儿童期遭受忽视的情况。"""

applications = u"""实际应用效果尚有待后续研究验证。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)